--初始化设备文件
apRunConfig={}
apRunConfig.webFile="defaultConfWeb.html" --用来配置加密wifi热点的文件
apRunConfig.ApIP="192.168.99.1" --默认AP的IP
apRunConfig.ApNetmask="255.255.255.0" --默认AP的掩码
apRunConfig.ApDhcpStartIp ="192.168.99.10"  --默认ap的DHCP分配开始ip

initStartConf={}
initStartConf.SystemDefaultAP="DefaultAP.txt"  --系统默认AP配置
initStartConf.InitApIP="192.168.98.1" --默认AP的IP
initStartConf.InitApNetmask = "255.255.255.0" --默认AP的掩码
initStartConf.InitApDhcpStartIp ="192.168.98.10"  --默认ap的DHCP分配开始ip
initStartConf.InitApSSID ="jpyqybz"  --默认ap的DHCP分配开始ip
initStartConf.InitApPWD ="bn091006"  --默认ap的DHCP分配开始ip

--初始化页面页面展示
function DefaultLeveWeb(req,res)
   -- print("start load init file ...")
    local filename = ''
    if req.path == '/' then
        filename = apRunConfig.webFile
    else
        filename = string.gsub(string.sub(req.path, 2), '/', '_')
    end
   0-- print("DefaultLeveWeb Init File Name：",filename)
    res:sendFile(filename)
end

--用户配置AP设置，用来设置SSID,密码等..
function UserApConfig(req,res)
    print("UserApConfig start config UserAp")
    if req.query.ssid ~= nil and req.query.pwd ~= nil then
       -- print(req.query.ssid ..req.query.pwd)
        local apCfg ={}
       -- print("req.query.ssid:",req.query.ssid)
       -- print("req.query.pwd:",req.query.pwd)
        apCfg.ssid=req.query.ssid
        apCfg.pwd=req.query.pwd
        apCfg.auth=wifi.WPA2_PSK
        --以下AP地址配置
        apCfg.ip=apRunConfig.ApIP
        apCfg.netmask=apRunConfig.ApNetmask
        --以下dhcp配置
        apCfg.start=apRunConfig.ApDhcpStartIp
        if file.open(BootProcessVar.UserAPConfig,"w") then
            file.write(sjson.encode(apCfg))
            file:close()
            res:send('<head><meta charset="UTF-8"><title>配置终端</title></head><h1>配置完成，正在重启</h1>')
                tmr.create():alarm(2000,tmr.ALARM_SINGLE,function() --创建定时器 2秒后重启
                    node.restart()
                end)
            return
        else
            res:send('<head><meta charset="UTF-8"><title>配置终端</title></head><h1>配置文件写入错误！！！</h1>')
            return
        end
    else
        res:send('<head><meta charset="UTF-8"><title>配置终端</title></head><h1>配置参数错误！！！</h1>')
    end
end

--AP配置，初始化方式运行
initStartConf.DefaultLevelRun=function ()
    wifi.setmode(wifi.SOFTAP)
    local DeviceDefaultAP={}
    if not(file.exists(initStartConf.SystemDefaultAP)) then  --如果没有系统启动模式文件则直接进入初始化模式
       --  print("Not Find File:"..initStartConf.SystemDefaultAP.." Start Init Mode...") --没有找到文件，开始初始化模式
        --开始初始化模式
        DeviceDefaultAP.ssid=initStartConf.InitApSSID
        DeviceDefaultAP.pwd=initStartConf.InitApPWD
        DeviceDefaultAP.auth=wifi.WPA2_PSK
        DeviceDefaultAP.ip=initStartConf.InitApIP
        DeviceDefaultAP.netmask=initStartConf.InitApNetmask
        DeviceDefaultAP.start=initStartConf.InitApDhcpStartIp
        if file.open(initStartConf.SystemDefaultAP,"w") then
            file.write(sjson.encode(DeviceDefaultAP))
            file:close()
            print("Save DefaultAP File End.")
        end
    else
        if file.open(initStartConf.SystemDefaultAP) then --如果有文件直接打开
            local finfo =file.read()
       --     print("finfo"..finfo)
            DeviceDefaultAP= sjson.decode(finfo)
            file.close()
       --     print("Read DefaultAP File End.")
        end      
    end
    local apCfg ={}
    apCfg.ssid=DeviceDefaultAP.ssid
    apCfg.pwd=DeviceDefaultAP.pwd
    apCfg.auth=DeviceDefaultAP.auth
    wifi.ap.config(apCfg)
    apCfg=nil
    local apIpCfg={}
    apIpCfg.ip=DeviceDefaultAP.ip
    apIpCfg.netmask=DeviceDefaultAP.netmask
    wifi.ap.setip(apIpCfg)
    apIpCfg=nil
    local apDnchCfg={}
    apDnchCfg.start=DeviceDefaultAP.start
    wifi.ap.dhcp.config(apDnchCfg)
    apDnchCfg=nil
    wifi.ap.dhcp.start()
  --  print("Statup DefaultAP Mode...")
end

--以初始化模式运行
function InitStartMode()
    initStartConf.DefaultLevelRun()
    initStartConf.DefaultLevelRun=nil
    initStartConf=nil
    collectgarbage("collect") --回收之前的内存
   
    --延迟启动，避免与AP同时启动占用内存
    tmr.create():alarm(5000,tmr.ALARM_SINGLE,function() 
        collectgarbage("collect") --回收之前的内存
        dofile(BootProcessVar.webSer)
        httpServer:use('/',DefaultLeveWeb,"DefaultLeveWeb")
        httpServer:use('/userApConfig',UserApConfig,"userApConfig")
        httpServer:listen(80)
    print("InitStartMode End...")
    end)
   
end
InitStartMode()
